MLOps: 機械学習における継続的デリバリーと自動化のパイプライン
機械学習(ML)システムの
継続的インテグレーション(CI)、
継続的デリバリー(CD)、
継続的トレーニング(CT)
これがML特有。上記のCI/CDはwebアプリケーションにおいても登場する概念
の実装と自動化について説明
現在、効果的な ML を適用するための要素は次のとおりです。
大規模なデータセット
低価格のオンデマンド コンピューティング リソース
さまざまなクラウド プラットフォームでの ML 専用のアクセラレータ
さまざまな ML 研究分野における急速な進歩
(コンピュータ ビジョン、自然言語理解、Recommendations AI システムなど)
そのため、多くの企業がデータ サイエンス チームと ML 機能に投資して、ユーザーにビジネス価値をもたらす予測モデルを開発しています。
このドキュメントは、DevOps の原則を ML システム(MLOps)に適用するデータ サイエンティストと ML エンジニアを対象としています。
MLOps は、
ML システム開発(Dev)と
ML システム オペレーション(Ops)
の統合を目的とする ML エンジニアリングの文化と手法です。
MLOps を実践すると、統合、テスト、リリース、デプロイ、インフラストラクチャ管理など、ML システム構築のすべてのステップで自動化とモニタリングを推進できます。
データ サイエンティストは、ユースケースに関連するトレーニング データがあれば、オフラインのホールドアウト データセットの予測性能で ML モデルを実装してトレーニングできます。
holdout datasetってのは?
testかvalidationのことっぽいmiyamonz.icon
testか
しかし、実際の課題は ML モデルを構築することではなく、統合された ML システムを構築し、本番環境で継続的に運用することです。
Google における本番環境 ML サービスの長い歴史から、本番環境で ML ベースのシステムを運用する際には多くの問題点があることがわかっています。
これらの問題点の一部については、機械学習: 技術的負債の高金利のクレジット カードをご覧ください。
2014年 NeurIPSのSE4MLというワークショップ(software engineering for machine learning) googleチームから
MLシステムの中の、MLのコードはごく一部
https://gyazo.com/93bc6277043dd25f4b073b119fab3d12
DevOps と MLOps
ML モデルの開発手順
MLOps の成熟度
DevOps と MLOps
ML システムはソフトウェア システムであるため、同様の手法を適用して、大規模な ML システムを確実にビルドして運用できます。
ただし、ML システムは次の点で他のソフトウェア システムと異なります。
チームのスキル:
ML プロジェクトのチームには通常、探索的データ分析、モデル開発、テストに注力するデータ サイエンティストや ML 研究者が含まれます。
これらのメンバーが、本番環境クラスのサービスをビルドできる経験豊富なソフトウェア エンジニアではない場合があります。
開発:
ML には実験的性質があります。さまざまな機能、アルゴリズム、モデリング技術、パラメータ構成を試して、問題に最適な方法をできるだけ早く見つける必要があります。
何が機能し、何が機能しなかったかを追跡して、コードの再利用性を最大化しながら再現性を維持することが課題となります。
テスト:
ML システムのテストは、その他のソフトウェア システムのテストよりも複雑です。
一般的な単体テストと統合テストに加えて、データ検証、トレーニングされたモデル品質評価、モデル検証が必要です。
デプロイ:
ML システムでのデプロイは、予測サービスとしてオフラインでトレーニングした ML モデルのデプロイのようにシンプルではありません。
ML システムでは、マルチステップ パイプラインをデプロイして、デプロイモデルを自動的に再トレーニングする必要があります。
このパイプラインにより複雑さが増し、データ サイエンティストによるデプロイの前に手動で行われる手順を自動化して、新しいモデルのトレーニングと検証をする必要があります。
本番環境:
ML モデルは、最適化されていないコーディングだけでなく、絶えず変化するデータ プロファイルのためにパフォーマンスが低下する可能性があります。
つまり、従来のソフトウェア システムよりも多くの方法でモデルが劣化する可能性があるため、このような性能低下を考慮する必要があります。
そのため、データの概要統計を追跡し、モデルのオンライン パフォーマンスをモニタリングして、値が想定と異なる場合に通知を送信またはロールバックする必要があります。
ソース管理、単体テスト、統合テストの継続的インテグレーション(CI)、およびソフトウェア モジュールまたはパッケージの継続的デリバリー(CD)において、ML とその他のソフトウェア システムは類似しています。ただし、ML には次のような大きな違いがあります。
CI では、
コードとコンポーネントのテストと検証だけでなく、
データ、データスキーマ、モデルのテストと検証も行います。
CD は、
単一のソフトウェア パッケージやサービスについではなく、
別のサービス(モデル予測サービス)を自動的にデプロイするシステム(ML トレーニング パイプライン)です。
CT は、
ML システムに固有の新しいプロパティであり、自動的にモデルを再トレーニングして提供します。
以下のセクションでは、自動化を伴わない最も一般的なレベルから、ML と CI / CD パイプラインの自動化まで、3 つのレベルの MLOps について説明します。
2
まだレベル0なのでメモはあとでmiyamonz.icon
次のステップ
Kubeflow と Cloud Build を使用した CI / CD と ML パイプラインのアーキテクチャの詳細を確認する。
Cloud Build を使用した GitOps スタイルの継続的デリバリーの詳細を見る。
データ処理ワークフロー用の CI / CD パイプラインの設定の詳細を見る。
YouTube で Google Cloud の MLOps ベスト プラクティス(Cloud Next '19)を視聴する。
Google Cloud のその他の機能を試す。チュートリアルをご覧ください。